import CryptoJS from 'crypto-js'
import config from '@/config'

/**
 * 加密解密工具类
 * @author liu_jshan
 * @version 1.0
 */

const { AES_KEY, AES_IV } = config.secreyConfig

/**
 * AES加密
 * 使用AES加密算法和CBC模式，填充使用Pkcs7
 * @param {*} plainText 明文    
 * @returns 密文                          
 */
function AES_Encrypt(plainText) {
    const encrypted = CryptoJS.AES.encrypt(plainText, AES_KEY, {
        iv: AES_IV,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
    })
    return encrypted.toString()
}

/**
 * AES解密
 * 使用AES加密算法和CBC模式，填充使用Pkcs7
 * @param {*} ciphertext 密文
 * @returns 明文
 */
function AES_Decrypt(ciphertext) {
    const decrypted = CryptoJS.AES.decrypt(ciphertext, AES_KEY, {
        iv: AES_IV,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
    })
    return decrypted.toString(CryptoJS.enc.Utf8)
}

const secrecy = {
    AES_Encrypt,
    AES_Decrypt
}
export default secrecy